背景
之前写了一个钉钉机器人定时发消息的应用,感觉还有许多可以补充优化的地方,比如可以修改发送的消息内容,也可以启动或者停止定时发送消息。
但是之前是直接用本地node去执行代码,代码执行后无法改变其状态,于是打算用express和nginx来做一个简单的站点去执行操作。
代码逻辑
整个逻辑很简单,一个简单的前端页面,提供表单来发送请求修改发送的消息,服务端使用json文件来保存消息,在需要发送消息的时候读取json消息。
话不多说,直接上代码:
创建服务
const express = require('express');
const handleSendMsg = require('./src/sendMsg');
const doSchedule = require('./src/doSchedule');
const changeText = require('./src/changeText');
const app = express();
app.use(express.static('static'));
app.get('/changeText.json', changeText);
app.get('/sendMsg.json', handleSendMsg);
app.get('/doSchedule.json', doSchedule);
app.listen(3008, () => {
console.log('Listening on port %d', 3008);
});
处理消息
const logger = require('../myLogger');
const path = require('path');
const fs = require('fs');
module.exports = function(req, res) {
const query = req.query;
logger.info(`接收到修改消息的内容为:${JSON.stringify(query)}`);
const content = JSON.parse(fs.readFileSync(path.join(__dirname, '../config.json')));
if (query.workOff) {
content.workOff = query.workOff;
}
if (query.workOn) {
content.workOn = query.workOn;
}
fs.writeFileSync(path.join(__dirname, '../config.json'), JSON.stringify(content));
logger.info(`消息的内容已修改为:${JSON.stringify(content)}`);
res.json('消息文案已完成修改');
};
部署执行
安装nginx
nginx安装说起来比较简单,但因为是第一次装,还是踩了不少坑, 主要就是关注各个依赖的版本了,这个可以参考网络上的教程nginx安装
部署
进入到项目目录下,启动一个后台进程来执行express。。。
配置nginx
核心代码如下(参考链接):
upstream mysvr {
server 127.0.0.1:7878; // 需要被代理的服务器
}
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://mysvr; // nginx代理的服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx 相关命令
启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx
停止/重启
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)
命令帮助
[root@localhost ~]# /usr/local/nginx/sbin/nginx -h
验证配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
[cenos防火墙设置](https://blog.csdn.net/u011846...)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。